The present invention relates to the operation of a program code object such as an application in conjunction with an application context.
The concept of the software framework is widely used in current computing deployments. More information may be found for example in “Software Paradigms” by Stephen H. Kaisler (2005), p. 34-37. It is particularly applicable in the developing model of networked computing known as Cloud computing. Cloud computing allows access as needed to a pool of shared and configurable computing resources such as applications, services and storage. A more detailed definition may be found for example in “The NIST Definition of Cloud Computing” by Peter Mell and Timothy Grance.
A software framework is software that provides an architectural skeleton suitable for a particular group of software programs. Examples in the area of software deployment include the Spring Framework from Vmware Inc., Enterprise JavaBeans and the .NET Framework from Microsoft Corporation (Java and all Java-related trademarks and logos are trademarks or registered trademarks of Oracle Corporation in the US and other countries).
Many frameworks have the concept of work executing under specific contexts. These contexts, or application contexts, are implemented by software objects which allow the framework to offer a number of specific capabilities or services to work which executes in the contexts. Services provided cover, for example, aspects of configuration and data sharing, and might include workload management, state sharing, state isolation, dynamic resource binding, billing, historical tracking, runtime program definitions and the like. Example contexts in known software frameworks include Request Context, Session Context, Application Context and User Context. An advantage of using context within a framework is that work may be moved within the system but retain the context and its associated services. This is of particular importance when operating in a Cloud computing environment. For example, a billing service provided by a billing context may be retained across different operations involving a process running within the Cloud to produce a correct final billing total. A common framework characteristic is that program code objects, known as framework plugins or framework extensions, operating under the framework are required to conform to the specific programming model or coding conventions of the framework (with regard to the definitions of interfaces, or annotations in the code, for example).
An application server is a computer server which provides services to application software. Examples of such services are data services, security services, transaction processing, workload management and the like. Examples include Oracle Corporation's WebLogic, SAP NetWeaver Application Server and IBM Corporation's WebSphere Application Server. Another example is IBM Corporation's Customer Information Control System (CICS) Transaction Server (IBM, WebSphere and CICS are trademarks or registered trademarks of International Business Machines Corporation, registered in many jurisdictions worldwide. Other product or service names may be trademarks or registered trademarks of others).
The CICS family of products provide application servers primarily concerned with online transaction processing and services related to it. CICS supports a wide variety of applications and operating systems. It provides an extensive application programming interface (API) and also controls a number of resources behind applications, for example security, databases, files, programs, transactions etc. that applications use. In a CICS system, the term transaction is used for a piece of processing initiated by a single request. A single transaction consists of one or more application programs that, when run, carry out the processing needed. The term task also has a specific meaning in CICS, and may be seen as being analogous to a thread. When CICS receives a request to run a transaction, it starts a new task that is associated with this one instance of the execution of the transaction. When the transaction completes, the task is terminated.
Another concept in CICS systems is that of running processes in CICS regions. A CICS region is a named instance of CICS (for example a named instance of CICS Transaction Server) running in its own address space. A CICS region can be started and stopped independently of other CICS regions. An application request can comprise more than one CICS task and can flow between CICS regions. A further CICS concept is that of the CICS bundle. A CICS bundle is a group of CICS resources (program and data files) which together form an installable whole. A bundle represents an application or part of an application.
It would be desirable to be able to provide for application servers such as CICS the advantages of using application context as it is provided by a software framework. It would be desirable to do this without having to rewrite application code, and so as to take advantage of features of the Cloud computing model.